package com.xebest.web.service;

import com.xebest.web.form.XeVenStoreInvForm;
import com.xebest.web.model.XeVenStoreDeliveryEntity;
import com.xebest.web.model.XeVenStoreInventoryEntity;
import com.xebest.web.model.XeVenStoreStockEntity;
import com.xebest.web.view.ErpUserInfo;
import com.xebest.web.view.XeVenStoreInvProView;
import com.xebest.web.view.XeVenStoreInventoryView;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;


/**
 * 仓库库存一览
 *
 * @author 杜春静
 */
public interface XeVenStoreInventoryService {

    /**
     * 查询库存一览列表
     *
     * @author 杜春静
     */
    List<XeVenStoreInventoryView> queryStoreInvList(Map<String, Object> params);

    /**
     * 批量修改库存的上下限
     *
     * @author 杜春静
     */
    int batchUpdateStoreInv(List<XeVenStoreInventoryEntity> params) throws Exception;

    /**
     * 批量更新库存上下限
     *
     * @author 杜春静
     */
    int batchUpdateInvLimit(Map<String, Object> params) throws Exception;

    /**
     * 更新库存一览表
     *
     * @author 杜春静
     */
    int updateStoreInv(XeVenStoreInvForm form, ErpUserInfo userInfo) throws Exception;

    /**
     * 查询仓库库存
     *
     * @author 杜春静
     */
    XeVenStoreInventoryEntity getStoreInvByParam(XeVenStoreInventoryEntity record);

    /**
     * 更新仓库的库存数量
     *
     * @author 杜春静
     */
    int updateStoreInvByStoreInventoryEntity(XeVenStoreInventoryEntity record, BigDecimal saleNum) throws Exception;

    /**
     * 添加库存一览
     *
     * @author 杜春静
     */
    int saveStoreInv(XeVenStoreInventoryEntity record) throws Exception;

    /**
     * 初始化仓库一览表  如果存在就更新（现用于采购在途数）
     *
     * @author 杜春静
     */
    int initStoreInv(XeVenStoreInventoryEntity record) throws Exception;

    /**
     * 出库时，根据备货信息，更新库存明细
     *
     * @author 杜春静
     */
    int updateStoreInvAndDetailByStoreStock(List<XeVenStoreStockEntity> storeStockList, Integer delivType) throws Exception;

    /**
     * 出库时，根据备货信息，更新库存一览主表
     *
     * @author 杜春静
     */
    int updateStoreInvAndDetailByDeliv(XeVenStoreDeliveryEntity delivEntity) throws Exception;

    /**
     * 查询库存商品列表
     *
     * @author 杜春静
     */
    List<XeVenStoreInvProView> queryInvProList(XeVenStoreInvForm storeInvForm);

    /**
     * @author 李书峰
     */
    BigDecimal queryStockCost(Map<String, Object> map);
}
  
